"""
商品模块枚举定义
用于统一管理各种状态和类型
"""

from enum import Enum


class ProductStatus(str, Enum):
    """商品状态枚举"""
    ACTIVE = "active"          # 上架
    INACTIVE = "inactive"      # 下架
    DRAFT = "draft"            # 草稿
    OUT_OF_STOCK = "out_of_stock"  # 缺货


class AttributeType(str, Enum):
    """属性类型枚举"""
    COLOR = "color"            # 颜色
    SIZE = "size"              # 尺寸
    CAPACITY = "capacity"      # 容量
    MATERIAL = "material"      # 材质
    STYLE = "style"            # 款式
    VERSION = "version"        # 版本
    OTHER = "other"            # 其他


class InputType(str, Enum):
    """输入类型枚举"""
    SELECT = "select"          # 下拉选择
    RADIO = "radio"            # 单选按钮
    CHECKBOX = "checkbox"      # 复选框
    TEXT = "text"              # 文本输入
    NUMBER = "number"          # 数字输入
    DATE = "date"              # 日期


class SpecificationDataType(str, Enum):
    """规格数据类型枚举"""
    TEXT = "text"              # 文本
    NUMBER = "number"          # 数字
    BOOLEAN = "boolean"        # 布尔值
    DATE = "date"              # 日期
    RANGE = "range"            # 范围


class WarrantyType(str, Enum):
    """保修类型枚举"""
    MANUFACTURER = "manufacturer"  # 厂商保修
    SELLER = "seller"              # 销售者保修
    EXTENDED = "extended"          # 延长保修
    NO_WARRANTY = "no_warranty"    # 无保修


class ServiceType(str, Enum):
    """服务类型枚举"""
    RETURN = "return"              # 退换货
    EXCHANGE = "exchange"          # 换货
    REPAIR = "repair"              # 维修
    INSTALLATION = "installation"  # 安装
    MAINTENANCE = "maintenance"    # 保养
    CONSULTATION = "consultation"  # 咨询


class ShippingMethod(str, Enum):
    """配送方式枚举"""
    STANDARD = "standard"          # 标准快递
    EXPRESS = "express"            # 特快专递
    ECONOMY = "economy"            # 经济快递
    SAME_DAY = "same_day"          # 当日达
    PICKUP = "pickup"              # 自提


class PackageType(str, Enum):
    """包装类型枚举"""
    RETAIL = "retail"              # 零售包装
    BULK = "bulk"                  # 散装
    GIFT = "gift"                  # 礼品包装
    PROTECTIVE = "protective"      # 保护包装
    CUSTOM = "custom"              # 定制包装